/**
 * Copyright (C) T-Systems International, 2013-2014
 * <p/>
 * The copyright of the computer program herein is the property of
 * T-Systems International. The program may be used and/or copied
 * only with the written permission of T-Systems International or in
 * accordance with the terms and conditions stipulated in the
 * agreement/contract under which the program has been supplied.
 * <p/>
 * $Author: kuzin43 $
 * $Date: 2014-10-16 13:27:35 +0000 (Thu, 16 Oct 2014) $
 * $Rev: 84 $
 */
package com.tsystems.bsipp.dm.persistence.model;

import com.tsystems.bsipp.dm.persistence.enumeration.PackageStatusValue;

import javax.persistence.*;
import java.util.Date;
import java.util.List;

import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH_4;
import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH_5;
import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH_8;
import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH_11;
import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH_30;
import static com.tsystems.bsipp.dm.persistence.model.ModelConstants.STRING_LENGTH;

@Entity
public class MigrationPackage extends AbstractEntity {

    @Column(length = STRING_LENGTH_30)
    private String packageName;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date packageCreationDate;

    @Enumerated(EnumType.STRING)
    @Column(length = STRING_LENGTH)
    private PackageStatusValue packageStatusId;

    @Column(length = STRING_LENGTH_5)
    private String localAreaCode;

    @Column(length = STRING_LENGTH_4)
    private String connectionArea;

    @Column(length = STRING_LENGTH_11)
    private String vstkNr;

    @Column(length = STRING_LENGTH_8)
    private String dlu;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfMigration;

    @Column
    private int plannedLineAmount;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfLineAssignment;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfCustomerInformation;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date dateOfPortUnlocked;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date edbDateOfOrderCreation;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistDmsStartDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistDmsEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistBlsTkpStartDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistBlsTkpEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpSupportStartDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpSupportEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpSupportIncidentStartDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpSupportIncidentEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpSupportComplaintEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpBillStartDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpBillEndDate;

    @Column
    @Temporal(TemporalType.TIMESTAMP)
    private Date whitelistIrrpComplaintStartDate;

    @OneToMany(mappedBy = "migrationPackage", cascade = CascadeType.ALL, fetch = FetchType.LAZY, orphanRemoval = true)
    private List<Line> lines;

    public List<Line> getLines() {
        return lines;
    }

    public void setLines(List<Line> lines) {
        this.lines = lines;
    }

    public String getPackageName() {
        return packageName;
    }

    public void setPackageName(String packageName) {
        this.packageName = packageName;
    }

    public Date getPackageCreationDate() {
        return packageCreationDate;
    }

    public void setPackageCreationDate(Date packageCreationDate) {
        this.packageCreationDate = packageCreationDate;
    }

    public PackageStatusValue getPackageStatusId() {
        return packageStatusId;
    }

    public void setPackageStatusId(PackageStatusValue packageStatusId) {
        this.packageStatusId = packageStatusId;
    }

    public String getLocalAreaCode() {
        return localAreaCode;
    }

    public void setLocalAreaCode(String localAreaCode) {
        this.localAreaCode = localAreaCode;
    }

    public String getConnectionArea() {
        return connectionArea;
    }

    public void setConnectionArea(String connectionArea) {
        this.connectionArea = connectionArea;
    }

    public String getVstkNr() {
        return vstkNr;
    }

    public void setVstkNr(String vstkNr) {
        this.vstkNr = vstkNr;
    }

    public String getDlu() {
        return dlu;
    }

    public void setDlu(String dlu) {
        this.dlu = dlu;
    }

    public Date getDateOfMigration() {
        return dateOfMigration;
    }

    public void setDateOfMigration(Date dateOfMigration) {
        this.dateOfMigration = dateOfMigration;
    }

    public int getPlannedLineAmount() {
        return plannedLineAmount;
    }

    public void setPlannedLineAmount(int plannedLineAmount) {
        this.plannedLineAmount = plannedLineAmount;
    }

    public Date getDateOfLineAssignment() {
        return dateOfLineAssignment;
    }

    public void setDateOfLineAssignment(Date dateOfLineAssignment) {
        this.dateOfLineAssignment = dateOfLineAssignment;
    }

    public Date getDateOfCustomerInformation() {
        return dateOfCustomerInformation;
    }

    public void setDateOfCustomerInformation(Date dateOfCustomerInformation) {
        this.dateOfCustomerInformation = dateOfCustomerInformation;
    }

    public Date getDateOfPortUnlocked() {
        return dateOfPortUnlocked;
    }

    public void setDateOfPortUnlocked(Date dateOfPortUnlocked) {
        this.dateOfPortUnlocked = dateOfPortUnlocked;
    }

    public Date getEdbDateOfOrderCreation() {
        return edbDateOfOrderCreation;
    }

    public void setEdbDateOfOrderCreation(Date edbDateOfOrderCreation) {
        this.edbDateOfOrderCreation = edbDateOfOrderCreation;
    }

    public Date getWhitelistDmsStartDate() {
        return whitelistDmsStartDate;
    }

    public void setWhitelistDmsStartDate(Date whitelistDmsStartDate) {
        this.whitelistDmsStartDate = whitelistDmsStartDate;
    }

    public Date getWhitelistDmsEndDate() {
        return whitelistDmsEndDate;
    }

    public void setWhitelistDmsEndDate(Date whitelistDmsEndDate) {
        this.whitelistDmsEndDate = whitelistDmsEndDate;
    }

    public Date getWhitelistBlsTkpStartDate() {
        return whitelistBlsTkpStartDate;
    }

    public void setWhitelistBlsTkpStartDate(Date whitelistBlsTkpStartDate) {
        this.whitelistBlsTkpStartDate = whitelistBlsTkpStartDate;
    }

    public Date getWhitelistBlsTkpEndDate() {
        return whitelistBlsTkpEndDate;
    }

    public void setWhitelistBlsTkpEndDate(Date whitelistBlsTkpEndDate) {
        this.whitelistBlsTkpEndDate = whitelistBlsTkpEndDate;
    }

    public Date getWhitelistIrrpSupportStartDate() {
        return whitelistIrrpSupportStartDate;
    }

    public void setWhitelistIrrpSupportStartDate(Date whitelistIrrpSupportStartDate) {
        this.whitelistIrrpSupportStartDate = whitelistIrrpSupportStartDate;
    }

    public Date getWhitelistIrrpSupportEndDate() {
        return whitelistIrrpSupportEndDate;
    }

    public void setWhitelistIrrpSupportEndDate(Date whitelistIrrpSupportEndDate) {
        this.whitelistIrrpSupportEndDate = whitelistIrrpSupportEndDate;
    }

    public Date getWhitelistIrrpSupportIncidentStartDate() {
        return whitelistIrrpSupportIncidentStartDate;
    }

    public void setWhitelistIrrpSupportIncidentStartDate(Date whitelistIrrpSupportIncidentStartDate) {
        this.whitelistIrrpSupportIncidentStartDate = whitelistIrrpSupportIncidentStartDate;
    }

    public Date getWhitelistIrrpSupportIncidentEndDate() {
        return whitelistIrrpSupportIncidentEndDate;
    }

    public void setWhitelistIrrpSupportIncidentEndDate(Date whitelistIrrpSupportIncidentEndDate) {
        this.whitelistIrrpSupportIncidentEndDate = whitelistIrrpSupportIncidentEndDate;
    }

    public Date getWhitelistIrrpSupportComplaintEndDate() {
        return whitelistIrrpSupportComplaintEndDate;
    }

    public void setWhitelistIrrpSupportComplaintEndDate(Date whitelistIrrpSupportComplaintEndDate) {
        this.whitelistIrrpSupportComplaintEndDate = whitelistIrrpSupportComplaintEndDate;
    }

    public Date getWhitelistIrrpBillStartDate() {
        return whitelistIrrpBillStartDate;
    }

    public void setWhitelistIrrpBillStartDate(Date whitelistIrrpBillStartDate) {
        this.whitelistIrrpBillStartDate = whitelistIrrpBillStartDate;
    }

    public Date getWhitelistIrrpBillEndDate() {
        return whitelistIrrpBillEndDate;
    }

    public void setWhitelistIrrpBillEndDate(Date whitelistIrrpBillEndDate) {
        this.whitelistIrrpBillEndDate = whitelistIrrpBillEndDate;
    }

    public Date getWhitelistIrrpComplaintStartDate() {
        return whitelistIrrpComplaintStartDate;
    }

    public void setWhitelistIrrpComplaintStartDate(Date whitelistIrrpComplaintStartDate) {
        this.whitelistIrrpComplaintStartDate = whitelistIrrpComplaintStartDate;
    }
}
